<template>
  <div id="app">
    <h3>案例：折叠面板</h3>
    <div>
      <!-- 面板头 -->
      <div class="title" @click="handlerShow">
        <!-- <h4>芙蓉楼送辛渐</h4> -->
        <slot name="title" :row="row" abc="我" :c="24">
          <h4>芙蓉楼送辛渐(默认title)</h4>
        </slot>
        <span class="btn"> {{ isShow ? "关闭" : "打开" }} </span>
      </div>
      <!-- 面板内容 -->
      <div class="container" v-show="isShow">
        <!-- 步骤2：接收默认插槽的内容使用slot组件->vue内置的全局组件 -->
        <slot>
          <h2>默认内容</h2>
          <p>寒雨连江夜入吴,</p>
          <p>平明送客楚山孤。</p>
          <p>洛阳亲友如相问，</p>
          <p>一片冰心在玉壶。</p>
        </slot>
        <!-- slot组件通过name接收表明是哪个具名插槽 -->
        <slot name="one"></slot>
      </div>
    </div>
  </div>
</template>

<script>
/**
 * 面板折叠实现使用技术：
 * 1. 事件绑定：@click
 * 2. 控制元素显示：v-if/v-show
 */
export default {
  data() {
    return {
      isShow: true,
      row: {
        name: "小红",
        age: 18,
      },
    };
  },
  methods: {
    // 点击控制面板内容是否显示
    handlerShow() {
      // console.log(123)
      // 1. 如果上一次显示，当前点击不显示 2. 如果上一次不显示，当前点击显示
      console.log("上一次是否显示：", this.isShow);

      this.isShow = !this.isShow;
    },
  },
};
</script>

<style lang="less" scoped>
body {
  background-color: #ccc;
  #app {
    width: 400px;
    margin: 20px auto;
    background-color: #fff;
    border: 4px solid blueviolet;
    border-radius: 1em;
    box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.5);
    padding: 1em 2em 2em;
    h3 {
      text-align: center;
    }
    .title {
      display: flex;
      justify-content: space-between;
      align-items: center;
      border: 1px solid #ccc;
      padding: 0 1em;
    }
    .title h4 {
      line-height: 2;
      margin: 0;
    }
    .container {
      border: 1px solid #ccc;
      padding: 0 1em;
    }
    .btn {
      /* 鼠标改成手的形状 */
      cursor: pointer;
    }
  }
}
</style>